<?php
/**
 * <https://y.st./>
 * Copyright © 2019 Alex Yst <mailto:copyright@y.st>
 * 
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 * 
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU General Public License for more details.
 * 
 * You should have received a copy of the GNU General Public License
 * along with this program. If not, see <https://www.gnu.org./licenses/>.
**/

$xhtml = array(
	'<{title}>' => 'Vocal lessons postponed again',
	'takedown' => '2017-11-01',
	'<{body}>' => <<<END
<img src="/img/CC_BY-SA_4.0/y.st./weblog/2019/07/22.jpg" alt="Down the clinic stairway" class="framed-centred-image" width="800" height="480"/>
<section id="diet">
	<h2>Dietary intake</h2>
	<p>
		For breakfast, I had a bowel of cereal.
		For each lunch and dinner, I had a soft taco.
	</p>
</section>
<section id="voice">
	<h2>Vocal lessons</h2>
	<p>
		I biked to the hearing and voice clinic as planned.
		There, they still didn&apos;t know what was going on.
		And they still haven&apos;t contacted me.
		They told me though that there&apos;s a one to three month waiting period, so it was probably looking more like I&apos;d be on the three-month-end of things, and that I can probably expect to get in in the fall.
		So I can&apos;t even get in this term.
		But hasn&apos;t it been three months already?
		I handed in my paperwork before last term, and I&apos;m a month into this term.
		That should be just over three months now.
		And sure enough, I checked my journal when I got home, and found I&apos;d submitted the paperwork on <a href="/en/weblog/2019/04-April/08.xhtml#rain">April 08</a>.
		It&apos;s been over three months now.
	</p>
	<p>
		After I got home, I received an email <strong>*finally*</strong> letting me know what&apos;s going on.
		I think they finally got back to me because I keep coming in and pestering their secretaries, and they see that I&apos;m going to keep doing that until they decide to give me some sort of status report.
		The email says the waiting list is long right now though, and I&apos;ll probably get in in either the winter or even as late as the spring.
		Fine.
		I can wait.
		Just let me know what&apos;s going on so I know there wasn&apos;t a problem with my application.
		That&apos;s all I ask.
	</p>
	<p>
		Oh, drats.
		I just realised that that means I&apos;m stuck at the pizza place for even longer.
		I can&apos;t even fix my voice right away once I get started, so I was hoping to get started soon so I could get this underway.
		I&apos;m going to be stuck here not only through spring term, but beyond.
	</p>
	<p>
		Also,  the email said I&apos;m on their waiting list.
		That means the application was processed already, and the claim made to me before that they&apos;d get back to me either way wasn&apos;t true after all.
		They might have gotten back to me if my application was declined.
		I don&apos;t even know.
		But they didn&apos;t get back to me about my application being accepted until I kept coming in and pestering them.
		Furthermore, now that I&apos;ve finally gotten an email response, I can now inquire by email around spring term (or later, if I&apos;m patient) if I haven&apos;t heard anything.
		I don&apos;t have to bike all the way to the clinic next time.
		I mean, I need the exercise, but I&apos;m also often busy.
	</p>
</section>
<section id="drudgery">
	<h2>Drudgery</h2>
	<p>
		My discussion post for the day:
	</p>
	<blockquote>
		<p>
			Thank you for your explanation of <code>cameraControls.update()</code>.
			Moving a part of the scene using the mouse is part of our assignment this week, so perhaps the <code>cameraControls</code> object will help with that.
			I&apos;m hoping the <code>cameraControls</code> object can move more than just the camera though, as if the camera moves, the plane we put behind the scene will need to move as well so only our view of the main subject of the scene seems to change, though even better would be to have the central object move while keeping the plane and the camera in place.
			I have a prototype that allows the central object to be moved using the arrow keys, but I haven&apos;t managed to get mouse controls figured out yet.
		</p>
		<p>
			The main event loop is known as the graphics loop as you said in the context of graphics programming, but it&apos;s also important to note that main event loops aren&apos;t specific to graphics programming, and aren&apos;t known as that in other contexts.
			A graphics loop is therefore a main event loop used in graphics programming, making it a subclass of main event loops in general.
		</p>
	</blockquote>
	<p>
		The project for the week is coming along better than I thought it would.
		I got a nasty surprise today in that I found out I have to get the model to move using the mouse - I&apos;ve been going to use the arrow keys, which would be much easier - but it seems the boilerplate code we start with already has all the mouse controls implemented.
		The only catch is that the mouse controls rotate the camera, which basically means that they rotate everything <strong>*except*</strong> the camera, as far as the user is concerned.
		I found an easy way after writing up the post above to fix objects in the scene though: attach them to the camera, so they move exactly with the camera and compensate for the camera&apos;s movements.
		I just need to add a plane to the scene now and make shadows show up on it.
		I might even be able to get that done tomorrow.
		After that, all I&apos;ll have left to do is document the code, which is the easy part.
		We&apos;re supposed to write &quot;comprehensive comments&quot;, and I&apos;m very good at writing in detail about what I&apos;ve done.
		I go <strong>*way*</strong> overboard on comments for code I submit for grading, though I guess the code I write for other things isn&apos;t as documented as it should be.
		You wouldn&apos;t want me putting as many comments there as I do for school, but the code certainly could stand to have a bit more than it does.
	</p>
	<p>
		As I headed off to work, it occurred to me that most the object-attachment work I&apos;ve been figuring out is not completely unnecessary for the assignment.
		I needed to attach the objects so I could rotate them in unison as a single object without having to find a way to calculate all the repositioning of the component parts.
		But due to the mouse controls being built into the boilerplate code as a camera control, not a control for the object itself, the parts don&apos;t move at all.
		They don&apos;t need to move in unison if they&apos;re standing still!
		Ugh.
		Whatever.
		So that&apos;s a bunch of wasted frustration I went to to solve a puzzle that didn&apos;t need to be solved.
		Attaching things to the camera will still be necessary though, so that part of what I&apos;ve learned will actually be of use.
	</p>
</section>
<section id="Minetest">
	<h2>Minetest</h2>
	<img src="/img/CC_BY-SA_3.0/minetest.net./weblog/2019/07/22.png" alt="My mushroom garden" class="framed-centred-image" width="1024" height="600"/>
	<p>
		Gravel is so incredibly boring to deal with.
		I figured there <strong>*had*</strong> to be a better way of getting through it.
		So I checked the code of the game.
		I don&apos;t know if I&apos;m remembering incorrectly or if there&apos;s been a change in the game, but stone shovels as <strong>*so*</strong> much more effective against gravel than the bare hand is.
		It used to be that case, if I recall correctly, that making stone shovels wasn&apos;t worth the materials it took to build them.
		Now, they cut the time it takes to mine gravel to less than half what it has been for me.
		This is definitely the way to do this.
	</p>
	<p>
		Out of curiosity, I decided to check out how the stone sword performs on leaves.
		It seems the stone sword, wooden sword, and bare hand are equally effective against leaves.
		There&apos;s no point in even bothering with a tool for leaves.
	</p>
	<p>
		Before someone points out that diamond tools nearly instantly take care of both obstacles, I really don&apos;t like wasting non-renewable resources on tools (or furnace fuel).
		I did that in my last major world because it had the <code>renew</code> mod installed, making literally every obtainable material renewable if it wasn&apos;t already.
		In this world, there are finite resources, and I&apos;d rather hoard them in a chest forever than spend them on tools.
		That&apos;s just the way I play.
		I built bronze picks to mine obsidian and mese because those can&apos;t be harvested with stone tools, and I&apos;ll likely build diamond tools for the same purpose once I&apos;ve located diamonds, but I plan to mine anything I can using stone tools only.
		It&apos;s worth noting too that I don&apos;t <strong>*place*</strong> nodes that would require the expenditure of finitely-available resources either.
		That means no building out of obsidian (except obsidian glass), steel blocks, or diamond blocks; not that these are great building materials anyway.
	</p>
	<p>
		I finally came up with an idea for the node in Building Up From Zero that&apos;ll be inspired by the sand element.
		The old sand-themed node became irrelevant once I fixed <code>minestats</code>&apos; flawed levelling mechanics.
		With separate levels for each element, the nodes defined by Building Up From Zero could each take on an element that would power them.
		The sand-themed node could therefore drop different items depending on the element it represented.
		With the improved and unified levelling system though, nodes are still inspired by elements, but not directly tied to them, as well they shouldn&apos;t be, so as to support all possible elements that may be installed in a given environment while also not simply making some features inaccessible when elements available in one world aren&apos;t available in another.
		I don&apos;t have time to program it right now, but it&apos;ll basically look like the old sand-themed node, but with a base of stone.
		You&apos;ll be able to place three stacks of elemental items into the inventory it&apos;ll have, then try to dig up the node.
		If the inventory is empty, you&apos;ll just dig up the node as usual, but if all three inventory slots have a stack, you&apos;ll lose an even number of items from each stack up to the number of your levels, and gain that number of points toward levelling.
		It&apos;ll basically be an extra element, with the usual levelling curve, so you can take your levels a bit higher at a cost of valuable materials.
		Or sometimes not-so-valuable materials, such as mushrooms and flint.
		If one of the inventory slots is empty but at least one isn&apos;t, you simply won&apos;t be able to mine the node and it&apos;ll do nothing.
	</p>
</section>
<section id="promotion">
	<h2>Upcoming promotion?</h2>
	<p>
		The head manager showed me how to perform the nightly counts tonight.
		It&apos;s pretty straightforward, and I&apos;ve actually already done the drink counts on behalf of one of the other shift leaders.
		The other things we count are apparently the cheese and the boxes we sell pizzas and cheese breads in.
		I knew we counted the boxes, but I was unaware we counted the cheese every night.
	</p>
</section>
END
);
